Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.11.2017, 15:10
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

Сервер возвращает массив строкой. Как быть?
Добрый день. Столкнулся с такой вот проблемой - на сервере в БД хранятся достаточно большие объемы данных, которые запакованы в json строки и объединены в массив. Но сервер отдает этот массив как строку.

например вот

Я пока не могу понять как мне это обработать, что бы можно было пропустить этот массив через for (...) и уже внутри цикла работать с json.

Если запихнуть то что есть сейчас в цикл, то он разбивает его как строку, то есть по одному символу. Подскажите пожалуйста как быть?
Ответить с цитированием
  #2 (permalink)  
Старый 22.11.2017, 15:16
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,831

JSON.parse
Ответить с цитированием
  #3 (permalink)  
Старый 22.11.2017, 15:24
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

Nexus, это было первое что я попробовал. Но получаю ошибку: "Unexpected token in JSON at position 5509".

Там же штука выходит такая что строки которые можно было бы разобрать JSON.parse лежат в массиве, то есть обернуты в [], и что самое главное браузер это [] принимает не как массив, а как строку.

Я писал выше о том что в идеале впихнуть этот массив в цикл и уже там использовать JSON.parse. Но (опять таки выше писал), цикл возвращает каждый символ отдельно, потому что считает что ему дают не массив а строку
Ответить с цитированием
  #4 (permalink)  
Старый 22.11.2017, 15:51
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,279

Сообщение от smart-create
я попробовал. Но получаю ошибку: "Unexpected token in JSON at position 5509".
Значит твой JSON плохой.
Ответить с цитированием
  #5 (permalink)  
Старый 22.11.2017, 15:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,279

Сообщение от smart-create
Но получаю ошибку: "Unexpected token in JSON at position 5509".
http://javascript.ru/forum/showthread.php?p=438192
Ответить с цитированием
  #6 (permalink)  
Старый 22.11.2017, 15:56
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

ksa, JSON хороший, я его сам формирую и передаю в БД. До тех пор пока он попадает в бд он полностью рабочий. Может быть проблема в том как я его передаю на сервер, использую JSON.stringify(), но как по другому передать я не знаю.

В общем я к тому что пока массив не сохраняется на сервере с ним спокойно можно работать, парсить, перебирать в цикле, вообще все. А от когда он уже приходит с сервера, то это просто строка. То есть если проверит его на typeof, результат будет string
Ответить с цитированием
  #7 (permalink)  
Старый 22.11.2017, 16:00
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,279

Сообщение от smart-create
JSON хороший, я его сам формирую и передаю
Это не показатель, если что-то делаешь ты сам.
Получаешь ошибку - JSON плохой. А не парсер плохой...

Сообщение от smart-create
использую JSON.stringify()
Он так же работает правильно. И у тебя проблема не в этом... Проблема с тем, что ты получаешь от сервера - оно не правильное.
А вот кто его испортил - смотри по шагам.
Ответить с цитированием
  #8 (permalink)  
Старый 22.11.2017, 17:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от smart-create
JSON хороший, я его сам формирую и передаю в БД.
А зачем данные хранить в базе как json? А если потребуется поиск/сравнение/изменение? Клиент получает невалидный json, а причина скорее всего и кроется в хранении данных.
Ответить с цитированием
  #9 (permalink)  
Старый 22.11.2017, 18:17
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

Всем спасибо за участие. Я нашел причину. Пришлось весь json по строке перебрать. В итоге я наткнулся на строку, у которой одно из значений имело символ переноса строки в самом конце. Именно это enter в одном единственном месте и крашил весь json.
Ответить с цитированием
  #10 (permalink)  
Старый 23.11.2017, 09:26
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,831

smart-create, а сразу посмотреть что это за символ на позиции 5509 посмотреть нельзя было?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обработать переданные функции параметры как массив? javascript_pupil Общие вопросы Javascript 5 19.08.2016 13:59
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Отправить массив через get на сервер sonntagausgang Общие вопросы Javascript 2 25.05.2013 23:39
Как передать сложный массив на сервер vuler jQuery 1 27.03.2012 16:15
Как лучше сделать глобальный массив skyfish AJAX и COMET 4 17.02.2009 18:05